<?php

class Doctrine_Model_IngresoDao extends Doctrine_Model_BaseDao {
    
     public function guardar(Doctrine_Model_Entities_Ingreso $unIngreso) {
        //var_dump($unCliente);
        try {
            $this->getEntityManager()->persist($unIngreso);
            $this->getEntityManager()->flush();
            return true;
        } catch (Exception $e) {
            $logger = Zend_Registry::get('logger');
            $logger->log("Error: " . $e->getMessage(), Zend_Log::ERR);
            return false;
        }
    }
    public function obtenerPorId($id) {
        return $this->getEntityManager()->find('Doctrine_Model_Entities_Ingreso', $id);
    }
    
    public function eliminar(Doctrine_Model_Entities_Ingreso $unIngreso) {
        try {
            $this->getEntityManager()->remove($unIngreso);
            $this->getEntityManager()->flush();

            return true;
        } catch (Exception $e) {
            $logger = Zend_Registry::get('logger');

            $logger->log("Error: " . $e->getMessage(), Zend_Log::ERR);
            return false;
        }
    }
    
    public function obtenerEntreFechas($fecha_desde,$fecha_hasta){
        $ingresos = Array();
        $ingresos =  $this->getEntityManager()
                        ->createQuery("select i from Doctrine_Model_Entities_Ingreso i WHERE i.fechaCarga BETWEEN '$fecha_desde' AND '$fecha_hasta' ORDER BY i.fechaCarga")
                        ->getResult();
        
        return $ingresos;
    }
    
    public function obtenerPrimerIngresoCliente($cliente_id) {
        
        $primer_ingreso =  $this->getEntityManager()
                        ->createQuery("select MIN(i.id) from Doctrine_Model_Entities_Ingreso i WHERE  i.cliente.id = $cliente_id'")
                        ->getResult();
        
        return $primer_ingreso;
    }
    
    public function obtenerUltimoIngresoCliente($cliente_id) {
        return $this->getEntityManager()->find('Doctrine_Model_Entities_Ingreso', $id);
    }
    
    public function obtenerEntreFechasYcantidadSesion($fecha_desde,$fecha_hasta,$cantSesion= null ,$tipo_sesion = null ){
        $ingresos = Array();
        $sql = "select i from Doctrine_Model_Entities_Ingreso i WHERE i.fechaCarga 
                                BETWEEN '$fecha_desde' AND '$fecha_hasta'";
        if(!is_null($cantSesion)){
           $sql .= " AND i.cantidad = $cantSesion";
        }
        if(!is_null($tipo_sesion)){
           $sql .= " AND i.tipoSesion = $tipo_sesion";
        }
        $sql .= " order by i.fechaCarga asc";
        $ingresos =  $this->getEntityManager()
                        ->createQuery($sql)
                        ->getResult();
        
        return $ingresos;
    }
    
    public function obtenerIngresosPorCliente($cliente_id) {
        $ingresos_cliente = Array();
        $sql = "select i from Doctrine_Model_Entities_Ingreso i WHERE i.cliente = $cliente_id ";
        $sql .=  " order by i.fechaCarga asc"; 
        $ingresos_cliente = $this->getEntityManager()
                        ->createQuery($sql)
                        ->getResult();
        
        return $ingresos_cliente;
    }
    
}
